// Package model 应用模型数据层
package model

import (
	"fmt"
	"go-web/pkg/logger"

	gormlogger "gorm.io/gorm/logger"

	"go-web/pkg/util"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

// DB gorm.DB 对象
var DB *gorm.DB

// DB gorm.DB 对象
func ConnectDB() *gorm.DB {
	// 读取环境变量（变量名保持原样）
	DB_USER, err1 := util.GetZshEnvVar("GO_BLOG_DB_USER")
	GO_BLOG_DB_PASSWORD, err2 := util.GetZshEnvVar("GO_BLOG_DB_PASSWORD")
	GO_BLOG_DB_ADDR, err3 := util.GetZshEnvVar("GO_BLOG_DB_ADDR")
	if err1 != nil || err2 != nil || err3 != nil {
		fmt.Println("Error1:", err1)
		fmt.Println("Error2:", err2)
		fmt.Println("Error3:", err3)
		panic("读取数据库环境变量失败")
	}
	// 动态拼接 DSN
	dsn := fmt.Sprintf("%s:%s@tcp(%s)/goblog?charset=utf8&parseTime=True&loc=Local&allowNativePasswords=true", DB_USER, GO_BLOG_DB_PASSWORD, GO_BLOG_DB_ADDR)
	var err error

	config := mysql.New(mysql.Config{DSN: dsn})

	// 准备数据库连接池
	DB, err = gorm.Open(config, &gorm.Config{
		Logger: gormlogger.Default.LogMode(gormlogger.Warn),
	})

	logger.LogError(err)
	return DB
}
